/*
 * Copyright (c) 2019.
 * http://www.ulabcare.com
 */

package com.mt.roll.passport.service;


import com.mt.roll.core.dto.LoginUser;
import com.mt.roll.core.params.MobileParam;
import com.mt.roll.core.vo.PageVo;
import com.mt.roll.core.vo.R;
import com.mt.roll.passport.params.BatchInvalidateSessionParam;
import com.mt.roll.passport.params.QueryLoginLogParam;
import com.mt.roll.passport.params.QuerySessionParam;
import com.mt.roll.passport.params.SessionParam;
import com.mt.roll.passport.vo.LoginLogVo;
import com.mt.roll.passport.vo.LoginSessionVo;

import java.util.List;

/**
 * 会话服务
 *
 * @author jiff
 * @date 2019-07-20
 * @since 1.0
 */
public interface SessionService {
    /**
     * 获取登录会话列表
     *
     * @param param
     * @return
     */
    R<PageVo<LoginSessionVo>> list(QuerySessionParam param);

    /**
     * 获取登录会话日志列表
     *
     * @param param
     * @return
     */
    R<PageVo<LoginLogVo>> listLog(QueryLoginLogParam param);

    /**
     * 注销用户会话
     *
     * @param param
     * @return
     */
    R<String> invalidateSession(SessionParam param);

    /**
     * 批量注销用户会话
     *
     * @param param
     * @return
     */
    R<List<String>> batchInvalidateSession(BatchInvalidateSessionParam param);

    /**
     * 根据手机号码注销用户会话，该手机号码所有会话都注销
     *
     * @param param
     * @return
     */
    R<List<String>> invalidateSession(MobileParam param);

    /**
     * 注销所有平台用户会话
     *
     * @return
     */
    R<List<String>> invalidateAllPlatformSession();

    /**
     * 获取登录用户
     *
     * @param param
     * @return
     */
    R<List<LoginUser>> getLoginSession(MobileParam param);
}
